package cn.good.yan.controller;

import cn.good.yan.apis.SayFeignSentinelApi;
import cn.good.yan.resp.ResultData;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

/**
 * 演示：openfeign + sentinel进行服务降级和流量监控的整合处理 --------
 * 要启动 9001 、 83 、 nacos、 sentinel服务端
 *
 * @author shengren.yan
 * @create 2022-04-06
 */
@RestController
public class SayNacosController {

    @Resource
    private SayFeignSentinelApi sayFeignSentinelApi;

    // 调用服务端 - openfeign 进行远程调用
    // 访问：http://localhost:83/ddd/say/222 接口成功 （通过 openfeign 远程调用成功）
    // 在 服务端，配置 对应的流控，
    // 访问：http://localhost:83/ddd/say/222 接口成功 多次访问- 会被流控  -- 测试 ok
    // 当我们断开 - 9001 服务，该服务下线 ---
    // 访问：http://localhost:83/ddd/say/222 接口失败 会触发 服务熔断，走 openfeign 的自定义 fallback 方法
    @GetMapping(value = "/ddd/say/{orderNo}")
    public ResultData<String> say(@PathVariable("orderNo") String orderNo) {
        return sayFeignSentinelApi.sayNo(orderNo);
    }

}

